package defectsim;

public class Material {

	public enum CrystalSystems {
		FCC,
		BCC
	}
	
	private CrystalSystems crystalSystem;
	private int numberOfActiveSlipSystems;
	private int numberOfSlipSystems;
	private double[] slipSystems;
	private String materialName;
	private double burgersVector;
	private double poissonRatio;
	private double shearModulus;
	private double dampingCoefficient;
	private double nucleationStress;
	private double nucleationTime;
	private double slipPlaneSpacing;
	private double interobstacleSpacing;
	
	public CrystalSystems getCrystalSystem() {
		return crystalSystem;
	}
	public void setCrystalSystem(CrystalSystems crystalSystem) {
		this.crystalSystem = crystalSystem;
	}
	public int getNumberOfActiveSlipSystems() {
		return numberOfActiveSlipSystems;
	}
	public void setNumberOfActiveSlipSystems(int numberofActiveSlipSystems) {
		this.numberOfActiveSlipSystems = numberofActiveSlipSystems;
	}
	public int getNumberOfSlipSystems() {
		return numberOfSlipSystems;
	}
	public void setNumberOfSlipSystems(int numberOfSlipSystems) {
		this.numberOfSlipSystems = numberOfSlipSystems;
	}
	public double[] getSlipSystems() {
		return slipSystems;
	}
	public void setSlipSystems(double[] slipSystems) {
		this.slipSystems = slipSystems;
	}
	public String getMaterialName() {
		return materialName;
	}
	public void setMaterialName(String materialName) {
		this.materialName = materialName;
	}
	public double getBurgersVector() {
		return burgersVector;
	}
	public void setBurgersVector(double burgersVector) {
		this.burgersVector = burgersVector;
	}
	public double getPoissonRatio() {
		return poissonRatio;
	}
	public void setPoissonRatio(double poissonRatio) {
		this.poissonRatio = poissonRatio;
	}
	public double getShearModulus() {
		return shearModulus;
	}
	public void setShearModulus(double shearModulus) {
		this.shearModulus = shearModulus;
	}
	public double getDampingCoefficient() {
		return dampingCoefficient;
	}
	public void setDampingCoefficient(double dampingCoefficient) {
		this.dampingCoefficient = dampingCoefficient;
	}
	
	public double getNucleationStress() {
		return nucleationStress;
	}
	public void setNucleationStress(double nucleationStress) {
		this.nucleationStress = nucleationStress;
	}
	public double getNucleationTime() {
		return nucleationTime;
	}
	public void setNucleationTime(double nucleationTime) {
		this.nucleationTime = nucleationTime;
	}
	
	/**
	 * @returns slip plane spacing of the material in nm
	 */
	public double getSlipPlaneSpacing() {
		return slipPlaneSpacing; 
	}
	public void setSlipPlaneSpacing(double spacing){
		this.slipPlaneSpacing = spacing;
	}
	public Material(String name){
		materialName = name;
	}
	/**
	 * @returns interobstacle spacing of the material in nm
	 */
	public double getInterobstacleSpacing() {
		return interobstacleSpacing;
	}
	public void setInterobstacleSpacing(double interobstacleSpacing) {
		this.interobstacleSpacing = interobstacleSpacing;
	}
	

}
